package cn.springsoter.core.tool.utils;

import java.util.Objects;
import java.util.function.BiConsumer;

/**
 * Iterable 工具类
 * 
 * @author kevin
 *
 */
public class IterableUtil {
	private IterableUtil() {}
	
	/**
	 * 带索引的foreach迭代器，索引从0开始
	 * 
	 * 使用方法：IterableUtil.forEach(list, (index, obj) -> System.out.println(index + "->" + obj));
	 * 
	 * @param <E>
	 * @param elements	需要迭代的list
	 * @param action	此参数是一个BiConsumer，输入的参数第一个是index，第二个是元素
	 */
	public static <E> void forEach(Iterable<? extends E> elements, BiConsumer<Integer, ? super E> action) {
		Objects.requireNonNull(elements);
		Objects.requireNonNull(action);
		
		int index = 0;
		for(E e : elements) {
			action.accept(index ++, e);
		}
	}
}
